package udp;

import java.io.IOException;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;

import actualizador.DatoEquipo;
import actualizador.Mensaje;
import utiles.Fecha;
import utiles.Ip;

public class UDPServidor {
			
	public static void main(String[] args) {
		String ip, ipCliente;
		int puertoEnvio= 1710, puertoReceptor= 1700, nroMensaje= 0;
		UDPEnviador enviador;
		UDPReceptor receptor;
		Mensaje msg;
		
		try {
			ip= Ip.getIpV4();
			ip= "10.12.9.71";
			System.out.println("Ip Servidor: "+ip);
			
			receptor= new UDPReceptor(puertoReceptor, 1024);
			
			msg= (Mensaje) receptor.recibirMensaje();
			ipCliente= msg.getDatosEquipoRemoto().getIp();
			System.out.println("Mensaje Recibido (Cliente: "+ipCliente+"): "+msg);				
			
			enviador= new UDPEnviador(puertoEnvio);
			
			msg= new Mensaje(nroMensaje++, new DatoEquipo(), "Chau."+Fecha.getMarcaTiempo());
			System.out.println("Respuesta a enviar: "+msg);
			
			enviador.enviarMensaje(ipCliente, msg);
			
			for(int i= 0; i < 250; i++){
				msg= (Mensaje) receptor.recibirMensaje();
				ipCliente= msg.getDatosEquipoRemoto().getIp();
				System.out.println("Mensaje Recibido (Cliente: "+ipCliente+"): "+msg);
			}
			
			receptor.cerrarDatagrama();
			enviador.cerrarDatagrama();
			
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (SocketTimeoutException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}	
		
		System.out.println("Fin.");
	}

}
